function [scheduledTargets, scheduledPriorities, status] = GRASP_Mutation(origScheduledTargets, origScheduledPriorities, s1OlTargets, s1OlBins, s2OlTargets, s2OlBins, scheduledTargets, scheduledPriorities)
%GRASP_Mutation Summary of this function goes here
%   Detailed explanation goes here
    
randomMutatedOrder = randperm(length(origScheduledTargets));

for randomIndex = 1:length(randomMutatedOrder)
  targetIndex = randomMutatedOrder(randomIndex);
  [s1ScheduledTargets, s1ScheduledPriorities, status] = GRASP_AddToSolution(origScheduledTargets(targetIndex), origScheduledPriorities(targetIndex), scheduledTargets, scheduledPriorities, s1OlTargets, s1OlBins);
  if ~status
    continue;
  end

  [s2ScheduledTargets, s2ScheduledPriorities, status] = GRASP_AddToSolution(origScheduledTargets(targetIndex), origScheduledPriorities(targetIndex), scheduledTargets, scheduledPriorities, s2OlTargets, s2OlBins);
  if ~status
    continue;
  end

  [tempScheduledTargets, tempScheduledPriorities, status] = GRASP_FindMatchingSolution(s1ScheduledTargets, s1ScheduledPriorities, s2ScheduledTargets, s2ScheduledPriorities);
  if ~status
    continue;
  end

  scheduledTargets = tempScheduledTargets;
  scheduledPriorities = tempScheduledPriorities;
end

status = 1;
end